// category-manager.js - 单词分类管理页面的逻辑

Page({
  data: {
    allWords: [],          // 所有单词
    allCategories: [],     // 所有分类
    selectedCategory: '',  // 当前选中的分类
    showAddCategoryModal: false, // 是否显示添加分类弹窗
    newCategoryName: '',   // 新分类名称
    showEditWordModal: false,    // 是否显示编辑单词弹窗
    currentWord: null,     // 当前编辑的单词
    tempWordCategories: [], // 临时存储单词分类用于编辑
    tempWordCategoriesMap: {}, // 供 WXML 使用的布尔映射，避免在模板中调用 includes()
    searchKeyword: '',     // 搜索关键词
    filteredWords: [],     // 搜索过滤后的单词
    isEditingCategory: false, // 是否处于编辑分类模式
    editingCategoryName: '',  // 当前编辑的分类名称
    showDeleteConfirm: false, // 是否显示删除确认弹窗
    deleteType: '',        // 删除类型：'category' 或 'word'
    deleteTarget: ''       // 删除目标ID或名称
  },

  // 页面加载
  onLoad: function(options) {
    this.initData();
    
    // 从URL参数中获取selectedCategory
    if (options && options.selectedCategory) {
      const selectedCategory = decodeURIComponent(options.selectedCategory);
      this.setData({ selectedCategory });
      
      // 过滤单词
      const filteredWords = this.data.allWords.filter(word => 
        word.categories.includes(selectedCategory)
      );
      this.setData({ filteredWords });
    }
  },

  // 初始化数据
  initData: function() {
    // 初始化数据管理器 - 使用全局实例
    const app = getApp();
    this.wordDataManager = app.globalData.wordDataManager;
    
    // 加载所有单词
    this.loadAllWords();
    
    // 加载所有分类
    this.loadAllCategories();
  },

  // 转发给朋友
  onShareAppMessage: function() {
    return {
      title: '拾刻学习 - 单词分类管理',
      path: '/pages/category-manager/category-manager',
      // imageUrl: '/images/book.png'
    };
  },
  
  // 分享到朋友圈
  onShareTimeline: function() {
    return {
      title: '拾刻学习 - 单词分类管理',
      query: 'from=timeline',
      // imageUrl: '/images/book.png'
    };
  },

  // 加载所有单词
  loadAllWords: function() {
    const allWords = this.wordDataManager.getAllWords();
    this.setData({
      allWords,
      filteredWords: allWords
    });
  },

  // 加载所有分类
  loadAllCategories: function() {
    const allCategories = this.wordDataManager.getAllCategories();
    this.setData({ allCategories });
  },

  // 搜索单词
  onSearchInput: function(e) {
    const keyword = e.detail.value.toLowerCase();
    this.setData({ searchKeyword: keyword });
    
    const filteredWords = this.data.allWords.filter(word => 
      word.english.toLowerCase().includes(keyword) || 
      word.chinese.toLowerCase().includes(keyword)
    );
    
    this.setData({ filteredWords });
  },

  // 选择分类
  selectCategory: function(e) {
    const { category } = e.currentTarget.dataset;
    this.setData({ selectedCategory: category });
    
    // 如果有选择分类，则过滤单词
    if (category) {
      const filteredWords = this.data.allWords.filter(word => 
        word.categories.includes(category)
      );
      this.setData({ filteredWords });
    } else {
      // 没有选择分类，显示所有单词
      this.setData({ filteredWords: this.data.allWords });
    }
  },

  // 显示添加分类弹窗
  showAddCategoryModal: function() {
    this.setData({
      showAddCategoryModal: true,
      newCategoryName: ''
    });
  },

  // 关闭添加分类弹窗
  closeAddCategoryModal: function() {
    this.setData({ showAddCategoryModal: false });
  },

  // 输入新分类名称
  onCategoryNameInput: function(e) {
    this.setData({ newCategoryName: e.detail.value });
  },

  // 添加新分类
  addCategory: function() {
    const { newCategoryName } = this.data;
    
    if (!newCategoryName.trim()) {
      wx.showToast({
        title: '请输入分类名称',
        icon: 'none'
      });
      return;
    }
    
    // 检查分类是否已存在
    if (this.data.allCategories.includes(newCategoryName)) {
      wx.showToast({
        title: '分类已存在',
        icon: 'none'
      });
      return;
    }
    
    // 添加分类（实际上是在单词中使用新分类，而不是单独存储分类）
    wx.showToast({
      title: '分类添加成功',
      icon: 'success'
    });
    
    // 关闭弹窗
    this.setData({ showAddCategoryModal: false });
    
    // 重新加载分类
    this.loadAllCategories();
  },

  // 显示编辑分类名称的弹窗
  showEditCategoryModal: function(e) {
    const { category } = e.currentTarget.dataset;
    this.setData({
      isEditingCategory: true,
      editingCategoryName: category
    });
  },

  // 保存编辑后的分类名称
  saveCategoryName: function() {
    const { editingCategoryName } = this.data;
    
    if (!editingCategoryName.trim()) {
      wx.showToast({
        title: '分类名称不能为空',
        icon: 'none'
      });
      return;
    }
    
    // 这里需要实现重命名分类的逻辑
    // 在实际应用中，应该更新所有使用该分类的单词
    wx.showToast({
      title: '分类名称已更新',
      icon: 'success'
    });
    
    // 关闭编辑模式
    this.setData({ isEditingCategory: false });
    
    // 重新加载分类和单词
    this.loadAllCategories();
    this.loadAllWords();
  },

  // 取消编辑分类名称
  cancelEditCategory: function() {
    this.setData({ isEditingCategory: false });
  },

  // 输入编辑后的分类名称
  onEditingCategoryInput: function(e) {
    this.setData({ editingCategoryName: e.detail.value });
  },

  // 显示删除确认弹窗
  showDeleteConfirm: function(e) {
    const { type, target } = e.currentTarget.dataset;
    this.setData({
      showDeleteConfirm: true,
      deleteType: type,
      deleteTarget: target
    });
  },

  // 关闭删除确认弹窗
  closeDeleteConfirm: function() {
    this.setData({ showDeleteConfirm: false });
  },

  // 确认删除
  confirmDelete: function() {
    const { deleteType, deleteTarget } = this.data;
    
    if (deleteType === 'category') {
      // 删除分类
      this.deleteCategory(deleteTarget);
    } else if (deleteType === 'word') {
      // 删除单词
      this.deleteWord(deleteTarget);
    }
    
    // 关闭弹窗
    this.setData({ showDeleteConfirm: false });
  },

  // 删除分类
  deleteCategory: function(categoryName) {
    // 实际应用中，应该移除所有单词中的该分类
    // 这里简化处理，仅从分类列表中移除
    
    // 更新所有单词，移除该分类
    const updatedWords = this.data.allWords.map(word => {
      return {
        ...word,
        categories: word.categories.filter(cat => cat !== categoryName)
      };
    });
    
    // 保存更新后的单词
    updatedWords.forEach(word => {
      this.wordDataManager.updateWord(word.id, word);
    });
    
    wx.showToast({
      title: '分类删除成功',
      icon: 'success'
    });
    
    // 重新加载数据
    this.loadAllCategories();
    this.loadAllWords();
    
    // 如果当前选中的是被删除的分类，则清除选择
    if (this.data.selectedCategory === categoryName) {
      this.setData({ selectedCategory: '' });
    }
  },

  // 删除单词
  deleteWord: function(wordId) {
    // 调用数据管理器删除单词
    this.wordDataManager.deleteWord(wordId);
    
    wx.showToast({
      title: '单词删除成功',
      icon: 'success'
    });
    
    // 重新加载数据
    this.loadAllWords();
    this.loadAllCategories();
  },

  // 显示编辑单词弹窗
  showEditWordModal: function(e) {
    const { word } = e.currentTarget.dataset;
    // 构建布尔映射，供模板使用
    const map = {};
    (word.categories || []).forEach(c => { map[c] = true; });
    this.setData({
      showEditWordModal: true,
      currentWord: word,
      tempWordCategories: [...(word.categories || [])],
      tempWordCategoriesMap: map
    });
  },

  // 关闭编辑单词弹窗
  closeEditWordModal: function() {
    this.setData({ showEditWordModal: false });
  },

  // 切换单词分类选择
  toggleCategorySelection: function(e) {
    const { category } = e.currentTarget.dataset;
    const map = { ...(this.data.tempWordCategoriesMap || {}) };
    map[category] = !map[category];
    // 同步数组数据
    const tempWordCategories = Object.keys(map).filter(k => !!map[k]);
    this.setData({ tempWordCategoriesMap: map, tempWordCategories });
  },

  // 保存单词分类编辑
  saveWordCategories: function() {
    const { currentWord, tempWordCategories } = this.data;
    
    // 更新单词分类
    const updatedWord = {
      ...currentWord,
      categories: tempWordCategories
    };
    
    // 保存更新后的单词
    this.wordDataManager.updateWord(updatedWord.id, updatedWord);
    
    wx.showToast({
      title: '单词分类已更新',
      icon: 'success'
    });
    
    // 关闭弹窗
    this.setData({ showEditWordModal: false });
    
    // 重新加载数据
    this.loadAllWords();
    this.loadAllCategories();
  },

  // 返回上一页
  onBackPress: function() {
    wx.navigateBack();
  },

  // 页面显示时重新加载数据
  onShow: function() {
    this.initData();
  },
  
  // 转发给朋友
  onShareAppMessage: function() {
    return {
      title: '拾刻学习 - 单词分类管理',
      path: '/pages/category-manager/category-manager',
      imageUrl: '/images/book.png'
    };
  },
  
  // 分享到朋友圈
  onShareTimeline: function() {
    return {
      title: '拾刻学习 - 单词分类管理',
      query: 'from=timeline',
      imageUrl: '/images/book.png'
    };
  }
});